package org.zcz;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.util.StrUtil;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
//        System.out.println("Hello world!");
        dowork("F:\\work\\beijing\\cmp_web\\src");
    }
    public static void dowork(String path){
        for (File file : FileUtil.ls(path)) {
            String fileName = file.getName();
//            System.out.println(fileName);
            if(file.isFile()){
//                System.out.println(fileName);
                doWorkFile(file);
            }else if(file.isDirectory()){
                dowork(file.getAbsolutePath());
            }else {
                System.out.println("不是文件也不是目录："+fileName);
            }
        }
    }
    public static void doWorkFile(File file){
        String extName = FileUtil.extName(file);
        if(extName.equals("vue") || extName.equals("js") || extName.equals("ts") || extName.equals("json")){
            if(extName.equals("vue")){
                checkWorkFile(file);
            }else if(extName.equals("js")){
//                checkWorkFile(file);
            }
        }else if (extName.equals("png") || extName.equals("svg") || extName.equals("ttf") || extName.equals("woff") || extName.equals("woff2")
        || extName.equals("jpg") || extName.equals("jpeg") || extName.equals("eot")){

        }
        else if(extName.equals("css")){
            // css文件里的中文，都是注释，忽略
//            checkWorkFile(file);
        }
        else {
            System.out.println(extName);
        }
    }
    public static void checkWorkFile(File file){
//        System.out.println(file.getAbsolutePath());
        if(notCheckFileName.indexOf(file.getName()) != -1){
            return;
        }
        FileReader fileReader = FileReader.create(file);
        boolean start = true;
        String extName = FileUtil.extName(file);
        if(extName.equals("vue")){
            start = false;
        }
        for (String line : fileReader.readLines()) {
            if(extName.equals("vue")){
                if(StrUtil.isNotBlank(line)){
                    line = line.trim();
                    if(line.indexOf("<script") != -1){
                        System.out.println("文件名："+file.getAbsolutePath());
                        start = true;
                    }else if(line.indexOf("<style") != -1){
                        start = false;
                    }
                }
            }
            if(start){
//                System.out.println(line);
                Matcher containChinese = isContainChinese(line);
                if(null != containChinese){
    //                System.out.println("文件名："+file.getAbsolutePath());
                    line = line.trim();
                    if(line.startsWith("//") || line.startsWith("*") || line.indexOf("//") != -1 || line.indexOf("console") != -1 ||
                    line.startsWith("/**") || line.startsWith("<") || line.startsWith("class=") || line.startsWith("/*")
                    || line.startsWith("case")){

                    } else if (line.indexOf("id:") != -1 && line.indexOf("label:") != -1) {

                    } else if (line.indexOf("key:") != -1 && line.indexOf("label:") != -1) {
//                        System.out.println(line);
                    } else if (line.indexOf("instance.") != -1) {
//                        System.out.println(line);
                    } else {
                        String group = containChinese.group();
                        System.out.println("原文："+line);
                        System.out.println("提取："+group);
                    }
                }
            }
        }

    }
    public static final List<String> notCheckFileName = new ArrayList<>();
    static {
        notCheckFileName.add("jquery.caret.js");
        notCheckFileName.add("python.js");
    }
    /**
     * 字符串是否包含中文
     *
     * @param str 待校验字符串
     * @return true 包含中文字符 false 不包含中文字符
     */
//    public static boolean isContainChinese(String str) {
//
//        if (StrUtil.isBlank(str)) {
//            return false;
//        }
//        Pattern p = Pattern.compile("[\u4E00-\u9FA5|\\！|\\，|\\。|\\（|\\）|\\《|\\》|\\“|\\”|\\？|\\：|\\；|\\【|\\】]");
//        Matcher m = p.matcher(str);
//        if (m.find()) {
//            return true;
//        }
//        return false;
//    }
    public static Matcher isContainChinese(String str) {

        Pattern p = Pattern.compile("[\u4e00-\u9fa5]+");
        Matcher m = p.matcher(str);
        if (m.find()) {
            return m;
        }
        return null;
    }
}